package com.otaviolube.db;

import java.util.ArrayList;
import java.util.List;

import com.otaviolube.negocio.Jogador;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

public class JogadorDAO {

	public static final String NOME_TABELA = "Jogador";
	public static final String COLUNA_ID = "id";
	public static final String COLUNA_EMAIL = "email";
	public static final String COLUNA_APELIDO = "apelido";
	public static final String COLUNA_RECORDE = "recorde";
	public static final String COLUNA_DATA = "data";
	public static final String COLUNA_SENHA = "senha";
	
	public static final String SCRIPT_CRIACAO_TABELA_JOGADOR = "CREATE TABLE " + NOME_TABELA + "("
			+ COLUNA_ID + " INTEGER PRIMARY KEY," + COLUNA_EMAIL + " TEXT," + COLUNA_APELIDO + " TEXT,"
			+ COLUNA_RECORDE + " INTEGER," + COLUNA_DATA + " TEXT," + COLUNA_SENHA + " TEXT" + ")";
	
	public static final String SCRIPT_DELECAO_TABELA = "DROP TABLE IF EXISTS " + NOME_TABELA;
	
	private SQLiteDatabase db = null;
	
	private static JogadorDAO instance;
	
	public JogadorDAO(Context context) {
		PersistenceHelper persistenceHelper = PersistenceHelper.getInstance(context);
		db = persistenceHelper.getWritableDatabase();
	}

	public static JogadorDAO getInstance(Context context){
		if(instance == null)
			instance = new JogadorDAO(context);
		return instance;
	}
	
	public void salvarJogador(Jogador jogador){
		//A implementar ... 
	}
	
	public List<Jogador> recuperarJogadores(){
		String query = "SELECT * FROM " + NOME_TABELA;
		Cursor cursor = db.rawQuery(query, null);
		List<Jogador> jogadores = preencherJogadoresCursor(cursor);
		
		return jogadores;
	}
	
	public void deletarJogador(Jogador jogador){
		
	}
	
	public void editarJogador(Jogador jogador){
		
	}
	
	public List<Jogador> preencherJogadoresCursor(Cursor cursor){
		List<Jogador> jogadores = new ArrayList<Jogador>();
		
		if(cursor == null)
			return jogadores;
		
		try{
			if(cursor.moveToFirst()){
				do{
					int indexId = cursor.getColumnIndex(COLUNA_ID);
					int indexEmail = cursor.getColumnIndex(COLUNA_EMAIL);
					int indexApelido = cursor.getColumnIndex(COLUNA_APELIDO);
					int indexRecorde = cursor.getColumnIndex(COLUNA_RECORDE);
					//int indexData = cursor.getColumnIndex(COLUNA_DATA);
					int indexSenha = cursor.getColumnIndex(COLUNA_SENHA);
					
					int id = cursor.getInt(indexId);
					String email = cursor.getString(indexEmail);
					String apelido = cursor.getString(indexApelido);
					//String data = cursor.getString(indexData);
					int recorde = cursor.getInt(indexRecorde);
					String senha = cursor.getString(indexSenha);
					
					Jogador jogador = new Jogador(id, email, apelido, senha, recorde);
					jogadores.add(jogador);
				}while(cursor.moveToNext());
			}
		}finally{
			cursor.close();
		}
		
		return jogadores;
		
	}
}
